package com.itheima.service;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.itheima.pojo.Blog;
import com.itheima.pojo.BlogVO;


import java.util.List;


public interface BlogService {

    // 1. 增加博客
    void add(BlogVO blogVO);

    //2. 删除博客
    void delete(BlogVO blogVO);

    //3. 删除选中博客
    void deleteBatch(List<BlogVO > list);

    //4. 编辑博客
    void edit(BlogVO blogVO);

    //5. 获取博客列表
    PageInfo<Blog> getList(BlogVO blogVO);


    //1.GET /tag/getArticleByTagUid  (tagUid,currentPage,pageSize)通过TagUid获取文章
    PageInfo<Blog> getArticleByTagUid(String tagUid, String currentPage, String pageSize);

    ///通过月份获取文章
    PageInfo<Blog> getArticleByMonth(String monthDate);

     //归档
    List<String> getSortList();


    /**
     * 查询所有已发布播客
     * @return
     */
    List<Blog> findList();

    /**
     * 根据uid查询对象
     * @param uid
     * @return
     */
    Blog findBlogByUid(String uid);

    /**
     * 根据blogSortUid查询blogList
     * @param blogSortUid
     * @return
     */
    PageInfo getBlogListBySortUid(String blogSortUid,Integer currentPage,Integer pageSize);

    /**
     * 根据等级和排序字段查询列表
     * @param level
     * @param sort
     * @return
     */
    PageInfo findByLevelAndSort(Integer level,Integer sort,Long currentPage);

    /**
     * 根据时间查询播客
     * @param currentPage
     * @param pageSize
     * @return
     */
    PageInfo findByTime(Integer currentPage,Integer pageSize);

    /**
     * 根据点击数查询前5名
     * @return
     */
    List<Blog> findHotBlog();

    /**
     * 按时间排序查询
     * @return
     */
    PageInfo<Blog> findNewBlog(Integer currentPage,Integer pageSize);

    /**
     * 根据标签获取相关的博客
     * @param tagUid
     * @param currentPage
     * @param pageSize
     * @return
     */
    PageInfo getSameBlogByTagUid(String tagUid, Long currentPage, Long pageSize);

    /**
     * 通过Uid获取博客内容
     * @param uid
     * @return
     */
    String getBlogByUid(String uid);

    /**
     * 根据博客uid点赞
     * @param uid
     * @return
     */
    public String praiseBlogByUid(String uid);

    /**
     * 通过Uid获取博客点赞数
     * @param uid
     * @return
     */
    String getBlogPraiseCountByUid(String uid);

    /**
     * 根据BlogUid获取同类型的博客
     * @param uid
     * @return
     */
    PageInfo getSameBlogByBlogUid(String uid);

    /**
     * 根据作者获取相关的博客
     * @param author
     * @param currentPage
     * @param pageSize
     * @return
     */
    public PageInfo searchBlogByAuthor(String author,Long currentPage,Long pageSize);

    /**
     * 通过关键字查询
     * @param keywords
     * @param currentPage
     * @param pageSize
     * @return
     */
    PageInfo sqlSearchBlog(String keywords,Integer currentPage,Integer pageSize);


    /**
     * 根据分类获取相关的博客
     * @param blogSortUid
     * @param currentPage
     * @param pageSize
     * @return
     */
    public PageInfo searchBlogBySort(String blogSortUid,Long currentPage,Long pageSize);

    /**
     * 根据标签获取相关的博客
     * @return
     */
    public PageInfo searchBlogByTag(String tagUid,Long currentPage,Long pageSize);

}
